<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   如何让神经网络把熊猫识别为秃鹫  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://dataunion.org/21155.html",
                  host: "http://dataunion.org",
                  prePath: "http://dataunion.org",
                  scheme: "http",
                  pathBase: "http://dataunion.org/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466457306: Accept with keywords: (title(0.4):秃鹫,神经网络,识别,数盟,社区, topn(0.466666666667):社区,概率,数盟,像素,分类器,神经网络,数据挖掘,结果,人工智能,论文,文章,图片,鸵鸟,函数,python,回归,图像,纸巾,篇文章,线性,秃鹫,浣熊,逻辑,错误,梯度,代码,分类,网络,损失,数学原理).-->
 </head>
 <body onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    如何让神经网络把熊猫识别为秃鹫
   </h1>
  </div>
  <div class="container" id="xmain">
   ﻿﻿
   <title>
    如何让神经网络把熊猫识别为秃鹫 | 数盟社区
   </title>
   <!-- All in One SEO Pack 2.2.7.6.2 by Michael Torbert of Semper Fi Web Design[32,62] -->
   <!-- /all in one seo pack -->
   <!--
<div align="center">
<a href="http://strata.oreilly.com.cn/hadoop-big-data-cn?cmp=mp-data-confreg-home-stcn16_dataunion_pc" target="_blank"><img src="http://dataunion.org/wp-content/uploads/2016/05/stratabj.jpg"/ ></a>
</div>
-->
   <header id="header-web">
    <div class="header-main">
     <hgroup class="logo">
      <h1>
       <a href="http://dataunion.org/" rel="home" title="数盟社区">
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/logo.png"/>
       </a>
      </h1>
     </hgroup>
     <!--logo-->
     <nav class="header-nav">
      <ul class="menu" id="menu-%e4%b8%bb%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-71" id="menu-item-71">
        <a href="http://dataunion.org/category/events" title="events">
         活动
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22457" id="menu-item-22457">
          <a href="http://dataunion.org/2016timeline">
           2016档期
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22459" id="menu-item-22459">
          <a href="http://dataunion.org/category/parterc">
           合作会议
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor menu-item-has-children menu-item-20869" id="menu-item-20869">
        <a href="http://dataunion.org/category/tech" title="articles">
         文章
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20867" id="menu-item-20867">
          <a href="http://dataunion.org/category/tech/base" title="base">
           基础架构
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-3302" id="menu-item-3302">
          <a href="http://dataunion.org/category/tech/ai" title="ai">
           人工智能
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3303" id="menu-item-3303">
          <a href="http://dataunion.org/category/tech/analysis" title="analysis">
           数据分析
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21920" id="menu-item-21920">
          <a href="http://dataunion.org/category/tech/dm">
           数据挖掘
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3314" id="menu-item-3314">
          <a href="http://dataunion.org/category/tech/viz" title="viz">
           可视化
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3305" id="menu-item-3305">
          <a href="http://dataunion.org/category/tech/devl" title="devl">
           编程语言
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-20876" id="menu-item-20876">
        <a href="http://dataunion.org/category/industry">
         行业
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16328" id="menu-item-16328">
          <a href="http://dataunion.org/category/industry/case" title="case">
           行业应用
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2112" id="menu-item-2112">
          <a href="http://dataunion.org/category/industry/demo" title="demo">
           Demo展示
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21562" id="menu-item-21562">
          <a href="http://dataunion.org/category/industry/news">
           行业资讯
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-311" id="menu-item-311">
        <a href="http://dataunion.org/category/sources" title="sources">
         资源
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20870" id="menu-item-20870">
        <a href="http://dataunion.org/category/books" title="book">
         图书
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21363" id="menu-item-21363">
        <a href="http://dataunion.org/category/training">
         课程
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-21853" id="menu-item-21853">
        <a href="http://dataunion.org/category/jobs">
         职位
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22050" id="menu-item-22050">
          <a href="http://dataunion.org/category/career">
           职业规划
          </a>
         </li>
        </ul>
       </li>
      </ul>
     </nav>
     <!--header-nav-->
    </div>
   </header>
   <!--header-web-->
   <div id="main">
    <div id="soutab">
     <form action="http://dataunion.org/" class="search" method="get">
     </form>
    </div>
    <div id="container">
     <nav id="mbx">
      当前位置：
      <a href="http://dataunion.org">
       首页
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech">
       文章
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech/ai">
       人工智能
      </a>
      &gt;  正文
     </nav>
     <!--mbx-->
     <article class="content">
      <header align="centre" class="contenttitle">
       <div class="mscc">
        <h1 class="mscctitle">
         <a href="http://dataunion.org/21155.html">
          如何让神经网络把熊猫识别为秃鹫
         </a>
        </h1>
        <address class="msccaddress ">
         <em>
          667 次阅读 -
         </em>
         <a href="http://dataunion.org/category/tech/ai" rel="category tag">
          人工智能
         </a>
        </address>
       </div>
      </header>
      <div class="content-text">
       <h3>
        神奇的神经网络
       </h3>
       <p>
        当我打开Google Photos并从我的照片中搜索“skyline”时，它找到了我在八月拍摄的这张纽约地平线的照片，而我之前并未对它做过任何标记。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680cdc0e5f02.jpg"/>
       </p>
       <p>
        当我搜索‘cathedral’，Google的神经网络会找到我曾看到的大教堂和教堂。这似乎很神奇。
       </p>
       <p>
        当然，神经网络并不神奇，一点都不！最近我阅读了一篇论文，
        <a href="http://arxiv.org/abs/1412.6572">
         “Explaining and Harnessing Adversarial Examples（对抗样本的解释和利用）”
        </a>
        ，进一步削弱了我对神经网络的神秘感。
       </p>
       <p>
        这篇论文介绍了如何欺骗神经网络，让其犯下非常惊人的错误。通过利用比你想象更简单（更线性！）的网络事实来做到这一点。我们会使用一个线性函数来逼近这个网络！
       </p>
       <p>
        重点是要理解，这并不能解释神经网络犯下的所有（或是大多数）类型的错误！有很多可能会犯的错误！但它确实在一些特定类型的错误上给了我们一些灵感，这非常好。
       </p>
       <p>
        在阅读这篇论文之前，我对神经网络的了解有以下三点：
       </p>
       <ul>
        <li>
         它在图片分类中表现得很出色（当我搜索“baby”时，它会找到我朋友可爱的孩子照片）
        </li>
        <li>
         大家都在网上谈论“深度”神经网络
        </li>
        <li>
         它们是由多层简单的函数（通常是sigmoid）构成，其结构如下图所示：
        </li>
       </ul>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680ced006e2f.jpg"/>
       </p>
       <h3>
        <b>
         错误
        </b>
       </h3>
       <p>
        我对神经网络了解的第四点（也是最后一点）是：它们有时会犯很可笑的错误。剧透一下本文后面的结果：这是两张图片，文章会展示神经网络是如何对其进行分类的。我们可以让它相信，下面黑色的图像是一张纸巾，而熊猫则会被识别为一只秃鹫！
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680cf2885948.jpg"/>
       </p>
       <p>
        现在，这个结果对我来说并不吃惊，因为机器学习是我的工作，而且我知道机器学习习惯产生奇怪的结果。但如果要解决这个超级奇怪的错误，我们就需要理解其背后的原理！我们要学习一些与神经网络有关的知识，然后我会教你如何让神经网络认为熊猫就是一只秃鹫。
       </p>
       <h3>
        做第一个预测
       </h3>
       <p>
        我们首先加载一个神经网络，然后做一些预测，最后再打破这些预测。这听起来真棒。但首先我需要在电脑上得到一个神经网络。
       </p>
       <p>
        我在电脑上安装了
        <a href="https://github.com/BVLC/caffe">
         Caffe
        </a>
        ，这是一个神经网络软件，是Berkeley Vision and Learning Center (BVLC) 社区贡献者开发的。我选择它是因为它是我第一个可以找到的软件，而且我可以下载一个预先训练好的网络。你也可以尝试下
        <a href="http://deeplearning.net/software/theano/">
         Theano
        </a>
        或者
        <a href="http://www.tensorflow.org/">
         Tensorflow
        </a>
        。Caffe有非常清晰的安装说明，这意味着在我正式使用它进行工作前，仅仅只需花6个小时来熟悉。
       </p>
       <p>
        如果你想要安装Caffe，可以参考我写的程序，它会让你节省更多的时间。只需去
        <a href="https://github.com/jvns/neural-nets-are-weird">
         the neural-networks-are-weird repo
        </a>
        这个仓库，然后按照说明运行即可。警告：它会下载大约1.5G的数据，并且需要编译一大堆的东西。下面是构建它的命令（仅仅3行！），你也可以在仓库下的README文件中找到。
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57685cd77aa2c469720365" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          git clone &amp;lt;a href="https://github.com/jvns/neural-nets-are-weird"&amp;gt;https://github.com/jvns/neural-nets-are-weird&amp;lt;/a&amp;gt;
cd neural-nets-are-weird
docker build -t neural-nets-fun:caffe .
docker run -i -p 9990:8888 -v $PWD:/neural-nets -t neural-nets-fun:caffe /bin/bash -c 'export PYTHONPATH=/opt/caffe/python &amp;amp;&amp;amp; cd /neural-nets &amp;amp;&amp;amp; ipython notebook --no-browser --ip 0.0.0.0'
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57685cd77aa2c469720365-1">
               1
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa2c469720365-2">
               2
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa2c469720365-3">
               3
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa2c469720365-4">
               4
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57685cd77aa2c469720365-1">
               <span class="crayon-e">
                git
               </span>
               <span class="crayon-r">
                clone
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                &amp;
               </span>
               <span class="crayon-v">
                lt
               </span>
               <span class="crayon-sy">
                ;
               </span>
               <span class="crayon-i">
                a
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                href
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-s">
                "https://github.com/jvns/neural-nets-are-weird"
               </span>
               <span class="crayon-o">
                &amp;
               </span>
               <span class="crayon-v">
                gt
               </span>
               <span class="crayon-sy">
                ;
               </span>
               <span class="crayon-v">
                https
               </span>
               <span class="crayon-o">
                :
               </span>
               <span class="crayon-c">
                //github.com/jvns/neural-nets-are-weird&amp;lt;/a&amp;gt;
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa2c469720365-2">
               <span class="crayon-e">
                cd
               </span>
               <span class="crayon-v">
                neural
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                nets
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                are
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-e">
                weird
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa2c469720365-3">
               <span class="crayon-e">
                docker
               </span>
               <span class="crayon-v">
                build
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-i">
                t
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                neural
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                nets
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                fun
               </span>
               <span class="crayon-o">
                :
               </span>
               <span class="crayon-i">
                caffe
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-sy">
                .
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa2c469720365-4">
               <span class="crayon-e">
                docker
               </span>
               <span class="crayon-v">
                run
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                i
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-i">
                p
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-cn">
                9990
               </span>
               <span class="crayon-o">
                :
               </span>
               <span class="crayon-cn">
                8888
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-i">
                v
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-sy">
                $
               </span>
               <span class="crayon-v">
                PWD
               </span>
               <span class="crayon-o">
                :
               </span>
               <span class="crayon-o">
                /
               </span>
               <span class="crayon-v">
                neural
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                nets
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-i">
                t
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                neural
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                nets
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-v">
                fun
               </span>
               <span class="crayon-o">
                :
               </span>
               <span class="crayon-v">
                caffe
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                /
               </span>
               <span class="crayon-v">
                bin
               </span>
               <span class="crayon-o">
                /
               </span>
               <span class="crayon-v">
                bash
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                -
               </span>
               <span class="crayon-i">
                c
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-s">
                'export PYTHONPATH=/opt/caffe/python &amp;amp;&amp;amp; cd /neural-nets &amp;amp;&amp;amp; ipython notebook --no-browser --ip 0.0.0.0'
               </span>
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0146 seconds] -->
       <p>
        这会启动你电脑中的IPython notebook服务，然后你便可以用Python做神经网络预测了。它需要在
        <a href="http://localhost:9990/notebooks/notebooks/neural-nets-are-weird.ipynb">
         本地9990端口
        </a>
        中运行。如果你不想照着做，完全没关系。我在这篇文章中也包含了实验图片。
       </p>
       <p>
        一旦我们有了IPtyon notebook并运行后，我们就可以开始运行代码并做预测了！在这里，我会贴一些美观的图片和少量的代码片段，但完整的代码和详细细节可以在
        <a href="https://github.com/jvns/neural-nets-are-weird/blob/master/notebooks/neural-nets-are-weird.ipynb">
         这里
        </a>
        查看。
       </p>
       <p>
        我们将使用一个名叫
        <a href="https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet">
         GoogLeNet
        </a>
        的神经网络，它在
        <a href="http://www.image-net.org/challenges/LSVRC/2014/results">
         LSVRC 2014 多个竞赛
        </a>
        中胜出。正确分类是在耗费94%时间的前5大网络猜测中。这是我读过的那篇论文的网络。（如果你想要一个很好的阅读，你可以阅读一下人类不能比GoogLeNet做得更好这篇文章。神经网络真的很神奇。）
       </p>
       <p>
        首先，让我们使用网络对一只可爱的kitten进行分类：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680cf03e1c0e.jpg"/>
       </p>
       <p>
        下面是对kitten进行分类的代码：
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57685cd77aa3d757561138" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          image = '/tmp/kitten.png'
# preprocess the kitten and resize it to 224x224 pixels
net.blobs['data'].data[...] = transformer.preprocess('data', caffe.io.load_image(image))
# make a prediction from the kitten pixels
out = net.forward()
# extract the most likely prediction
print("Predicted class is #{}.".format(out['prob'][0].argmax()))
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57685cd77aa3d757561138-1">
               1
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa3d757561138-2">
               2
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa3d757561138-3">
               3
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa3d757561138-4">
               4
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa3d757561138-5">
               5
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa3d757561138-6">
               6
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa3d757561138-7">
               7
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57685cd77aa3d757561138-1">
               <span class="crayon-v">
                image
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-s">
                '/tmp/kitten.png'
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa3d757561138-2">
               <span class="crayon-p">
                # preprocess the kitten and resize it to 224x224 pixels
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa3d757561138-3">
               <span class="crayon-v">
                net
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-v">
                blobs
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-s">
                'data'
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-v">
                data
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                transformer
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                preprocess
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-s">
                'data'
               </span>
               <span class="crayon-sy">
                ,
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                caffe
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-v">
                io
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                load_image
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                image
               </span>
               <span class="crayon-sy">
                )
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa3d757561138-4">
               <span class="crayon-p">
                # make a prediction from the kitten pixels
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa3d757561138-5">
               <span class="crayon-v">
                out
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                net
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                forward
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa3d757561138-6">
               <span class="crayon-p">
                # extract the most likely prediction
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa3d757561138-7">
               <span class="crayon-e">
                print
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-s">
                "Predicted class is #{}."
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                format
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                out
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-s">
                'prob'
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-cn">
                0
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                argmax
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-sy">
                )
               </span>
               <span class="crayon-sy">
                )
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0138 seconds] -->
       <p>
        就这些！仅仅只需3行代码。同样，我可以对一只可爱的小狗进行分类！
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d03e13141.jpg"/>
       </p>
       <p>
        原来这只狗不是柯基犬，只是颜色非常相似。这个网络对狗的了解果真比我还多。
       </p>
       <h3>
        一个错误是什么样的（以女王为例）
       </h3>
       <p>
        做这项工作时最有趣的事情是，我发现了神经网络认为英国女王戴在她的头上。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680cfe6f35f7.jpg"/>
       </p>
       <p>
        所以，现在我们看到网络做了一件正确的事，同时我们也看到它在不经意间犯了一个可爱的错误（女王戴的是浴帽）。现在…我们让它故意去犯错误，并进入它的核心。
       </p>
       <p>
        <b>
         故意犯错误
        </b>
       </p>
       <p>
        在真正理解其工作原理之前，我们需要做一些数学变换，首先让我们看看它对黑色屏幕的一些描述。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d0d53f284.jpg"/>
       </p>
       <p>
        这张纯黑色图像被认为是天鹅绒的概率是27%，被认为是纸巾的概率为4%。还有一些其它类别的概率没有列出来，这些概率之和为100%。
       </p>
       <p>
        我想弄清楚如何让神经网络更有信心认为这是一个纸巾。
       </p>
       <p>
        要做到这一点，我们需要计算神经网络的梯度。也就是神经网络的导数。你可以将这看作是一个方向，让图像在这个方向上看起来更像一张纸巾。
       </p>
       <p>
        要计算梯度，我们首先需要选择一个预期的结果来移动方向，并设置输出概率列表，0表示任何方向，1表示纸巾的方向。反向传播算法是一种计算梯度的算法。我原以为它很神秘，但事实上它只是一个实现链式法则的算法。如果你想知道更多，
        <a href="http://colah.github.io/posts/2015-08-Backprop/">
         这篇文章
        </a>
        有一个奇妙的解释。
       </p>
       <p>
        下面是我编写的代码，实际上非常简单！反向传播是一种最基本的神经网络运算，因此在库中很容易获得。
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57685cd77aa47234943778" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          def compute_gradient(image, intended_outcome):
    # Put the image into the network and make the prediction
    predict(image)
    # Get an empty set of probabilities
    probs = np.zeros_like(net.blobs['prob'].data)
    # Set the probability for our intended outcome to 1
    probs[0][intended_outcome] = 1
    # Do backpropagation to calculate the gradient for that outcome
    # and the image we put in
    gradient = net.backward(prob=probs)
    return gradient['data'].copy()
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-1">
               1
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa47234943778-2">
               2
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-3">
               3
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa47234943778-4">
               4
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-5">
               5
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa47234943778-6">
               6
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-7">
               7
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa47234943778-8">
               8
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-9">
               9
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57685cd77aa47234943778-10">
               10
              </div>
              <div class="crayon-num" data-line="crayon-57685cd77aa47234943778-11">
               11
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-1">
               <span class="crayon-e">
                def
               </span>
               <span class="crayon-e">
                compute_gradient
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                image
               </span>
               <span class="crayon-sy">
                ,
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                intended_outcome
               </span>
               <span class="crayon-sy">
                )
               </span>
               <span class="crayon-o">
                :
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa47234943778-2">
               <span class="crayon-h">
               </span>
               <span class="crayon-p">
                # Put the image into the network and make the prediction
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-3">
               <span class="crayon-h">
               </span>
               <span class="crayon-e">
                predict
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                image
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa47234943778-4">
               <span class="crayon-h">
               </span>
               <span class="crayon-p">
                # Get an empty set of probabilities
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-5">
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                probs
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                np
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                zeros_like
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                net
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-v">
                blobs
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-s">
                'prob'
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-v">
                data
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa47234943778-6">
               <span class="crayon-h">
               </span>
               <span class="crayon-p">
                # Set the probability for our intended outcome to 1
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-7">
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                probs
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-cn">
                0
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-v">
                intended_outcome
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-cn">
                1
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa47234943778-8">
               <span class="crayon-h">
               </span>
               <span class="crayon-p">
                # Do backpropagation to calculate the gradient for that outcome
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-9">
               <span class="crayon-h">
               </span>
               <span class="crayon-p">
                # and the image we put in
               </span>
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57685cd77aa47234943778-10">
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                gradient
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                net
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                backward
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-v">
                prob
               </span>
               <span class="crayon-o">
                =
               </span>
               <span class="crayon-v">
                probs
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
              <div class="crayon-line" id="crayon-57685cd77aa47234943778-11">
               <span class="crayon-h">
               </span>
               <span class="crayon-st">
                return
               </span>
               <span class="crayon-h">
               </span>
               <span class="crayon-v">
                gradient
               </span>
               <span class="crayon-sy">
                [
               </span>
               <span class="crayon-s">
                'data'
               </span>
               <span class="crayon-sy">
                ]
               </span>
               <span class="crayon-sy">
                .
               </span>
               <span class="crayon-e">
                copy
               </span>
               <span class="crayon-sy">
                (
               </span>
               <span class="crayon-sy">
                )
               </span>
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0103 seconds] -->
       <p>
        这基本上告诉了我们，什么样的神经网络会在这一点上寻找。因为我们处理的所有东西都可以表示为一个图像，下面这个是compute_gradient(black, paper_towel_label)的输出，缩放到可见比例。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d11a73d90.jpg"/>
       </p>
       <p>
        现在，我们可以从我们的黑色屏幕添加或减去一个非常明亮的部分，使神经网络认为我们的图像或多或少像一张纸巾。由于我们添加的图像太亮（像素值小于1 / 256），所以差异完全看不到。下面是这个结果：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d07ead3e3.jpg"/>
       </p>
       <p>
        现 在，神经网络以16%的概率肯定我们的黑色屏幕是一张纸巾，而不是4%！真灵巧。但是，我们可以做的更好。我们可以采取走十个小步来构成一个有点像纸巾的 每一步，而不是在纸巾的方向直接走一步。你可以在下面看到随时间变化的概率。你会注意到概率值与之前的不同，因为我们的步长大小不同（0.1，而不是 0.9）。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d16cafb58.jpg"/>
       </p>
       <p>
        最后的结果：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d0d1683da.jpg"/>
       </p>
       <p>
        下面是构成这张图像的像素值！他们都从0开始，而且你可以看到，我们已经转换了它们，使其认为该图像就是纸巾。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d1ad7ed09.jpg"/>
       </p>
       <p>
        我们还可以用50乘以这个图像从而获得一个更好的图像感知。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d10f33cd9.jpg"/>
       </p>
       <p>
        对我来说，这看起来并不像一块纸巾，但对你可能就像。我猜测图像的所有漩涡都戏弄了神经网络使其认为这是一张纸巾。这牵扯到基本的概念证明和一些数学原理。马上我们就要接触更多的数学知识了，但首先我们来玩点有趣的。
       </p>
       <h3>
        玩转神经网络
       </h3>
       <p>
        一旦我理解了这个，它就会变得非常有趣。我们可以换一只猫变成浴巾：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d1f43cead.jpg"/>
       </p>
       <p>
        一个垃圾桶可以变成一个水壶/鸡尾酒调酒器：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d242adc54.jpg"/>
       </p>
       <p>
        一只熊猫可以变成秃鹫。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d30a2c54b.jpg"/>
       </p>
       <p>
        这张图表明，在将熊猫认为是秃鹰的100步内，其概率曲线转变地很迅速。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d28f7d585.jpg"/>
       </p>
       <p>
        你可以查看代码，让这些工作在
        <a href="https://github.com/jvns/neural-nets-are-weird/blob/master/notebooks/neural-nets-are-weird.ipynb">
         IPython notebook
        </a>
        中运行。真的很有趣。
       </p>
       <p>
        现在，是时候多一点数学原理了。
       </p>
       <h3>
        如何工作：逻辑回归
       </h3>
       <p>
        首先，让我们讨论一种最简单的图像分类方法——逻辑回归。什么是逻辑回归？下面我来试着解释下。
       </p>
       <p>
        假 设你有一个线性函数，用于分类一张图像是否是浣熊。那么我们如何使用线性函数呢？现在假设你的图像只有5个像素（x​1​​,x​2​​,x​3​​,x ​4​​,x​5​​），取值均在0和255之间。我们的线性函数都有一个权重，比如取值为（23, – 3,9,2, 5），然后对图像进行分类，我们 会将得到像素和权重的内积：
       </p>
       <blockquote>
        <p>
         result=23x​1​​−3x​2​​+9x​3​​+2x​4​​−5x​5​​
        </p>
       </blockquote>
       <p>
        假 设现在的结果是794。那么794到底意味着它是浣熊或者不是呢？794是概率吗？794当然不是概率。概率是一个0到1之间的数。我们的结果在−∞到∞ 之间。人们将一个取值在−∞到∞之间的数转为一个概率值的一般方法是使用一个叫做logistic的函数：S(t)=1/(1+e^(-t))
       </p>
       <p>
        此函数的图形如下所示：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d3a6ef93c.jpg"/>
       </p>
       <p>
        S(794)的结果基本为1，所以如果我们从浣熊的权重得到794，那么我们就肯定它100%是个浣熊。在这个模型中——我们先使用线性函数变换数据，然后应用逻辑函数得到一个概率值，这就是逻辑回归，而且这是一种非常简单流行的机器学习技术。
       </p>
       <p>
        机器学习中的“学习”主要是在给定的训练集下，如何决定正确的权重（比如（23, – 3,9,2, 5）），这样我们得到的概率值才能尽可能的好。通常训练集越大越好。
       </p>
       <p>
        现在我们理解了什么是逻辑回归，接下来让我们讨论下如何打破它吧！
       </p>
       <h3>
        打破逻辑回归
       </h3>
       <p>
        这有一篇华丽的博文，Andrej Karpathy发表的
        <a href="http://karpathy.github.io/2015/03/30/breaking-convnets/">
         Breaking Linear Classifiers on ImageNet
        </a>
        ，解释了如何完美地打破一个简单线性模型（不是逻辑回归，而是线性模型）。后面我们将使用同样的原理来打破神经网络。
       </p>
       <p>
        这有一个例子（来自Karpathy的文章），一些区分不同食物，鲜花以及动物的线性分类器，可视化为下图（点击可放大）。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d3dc00e34.jpg"/>
       </p>
       <p>
        你可以看到“Granny Smith”分类器基本上是问“是绿色么？”（并不是以最坏的方式来找出！），而“menu”分类器发现菜单通常是白色。Karpathy 对其解释的非常清楚：
       </p>
       <blockquote>
        <p>
         例如，苹果是绿色的，所以线性分类器在所有的空间位置中，绿色通道上呈现正权值，蓝色和红色通道上呈现负权值。因此，它有效地计算了中间是绿色成分的量。
        </p>
       </blockquote>
       <p>
        所以，如果我想要让Granny Smith分类器认为我是一个苹果，我需要做的是：
       </p>
       <ul>
        <li>
         找出图中哪一个像素点最关心绿色
        </li>
        <li>
         给关心绿色的像素点着色
        </li>
        <li>
         证明！
        </li>
       </ul>
       <p>
        所以现在我们知道如何去欺骗一个线性分类器。但是神经网络并不是线性的，它是高度非线性的！为什么会相关呢？
       </p>
       <h3>
        如何工作：神经网络
       </h3>
       <p>
        在这我必须诚实一点：我不是神经网络专家，我对神经网络的解释并不会很出色。Michael Nielsen写了一本叫做《
        <a href="http://neuralnetworksanddeeplearning.com/">
         Neural Networks and Deep Learning
        </a>
        》的书，写的很好。另外，
        <a href="http://colah.github.io/">
         Christopher Olah的博客
        </a>
        也不错。
       </p>
       <p>
        我所知道的神经网络是：它们是函数。你输入一张图像，你会得到一个概率列表，对每个类都有一个概率。这些是你在这篇文章中看到的图像的数字。（它是一只狗吗？不。淋浴帽？也不是。一个太阳能电池？YES！！）
       </p>
       <p>
        因此，一个神经网络，就像1000个函数（每个概率对应一个）。但1000个函数对于推理来说非常复杂。因此，做神经网络的人，他们把这1000个概率组合并为一个单一的“得分”，并称之为“损失函数”。
       </p>
       <p>
        每个图像的损失函数取决于图像实际正确的输出。假设我有一张鸵鸟的图片，并且神经网络有一个输出概率Pj，其中j=1…1000，但对于每只鸵鸟我想要得到的是概率yj。那么损失函数为：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d42f01b98.jpg"/>
       </p>
       <p>
        假设与“鸵鸟”对应的标签值是700，那么y700=1，其它的yj就为0，L=-logp700。
       </p>
       <p>
        在 这里，重点是要理解神经网络给你的是一个函数，当你输入一张图像（熊猫），你会得到损失函数的最终值（一个数，如2）。因为它是一个单值函数，所以我们将 该函数的导数（或梯度）赋值给另一张图像。然后，你就可以使用这个图像来欺骗神经网络，也就是用我们在这篇文章前面讨论的方法！
       </p>
       <h3>
        打破神经网络
       </h3>
       <p>
        下面是关于如何打破一个线性函数/逻辑回归与神经网络的关系！也就是你一直在等待的数学原理！思考下我们的图像（可爱的熊猫），损失函数看起来像：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d45adcbc4.jpg"/>
       </p>
       <p>
        其中，梯度grad等于∇L(x)。因为这是微积分。为了让损失函数的变化的更多，我们要最大化移动的delta和梯度grad两者的点积。让我们通过compute_gradient()函数计算梯度，并把它画成一个图片：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d3c2d0361.jpg"/>
       </p>
       <p>
        直觉告诉我们需要做的是创建一个delta，它重点强调神经网络认为重要的图像像素。现在，假设grad为(−0.01,−0.01,0.01,0.02,0.03).
       </p>
       <p>
        我们可以取delta=(−1,−1,1,1,1)，那么grad⋅delta的值为0.08.。让我们尝试一下！在代码中，就是delta = np.sign(grad)。当我们通过这个数量移动时，果然–现在熊猫变成黄鼠狼了。
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d4a4f08af.jpg"/>
       </p>
       <p>
        但 是，这是为什么呢？让我们来思考下损失函数。我们开始看到的结果显示，它是熊猫的概率为99.57%。−log(0.9957)=0.0018。非常小！ 因此，添加一个delta倍会增加我们的损失函数（使它不像熊猫），而减去一个delta倍会减少我们的损失函数（使它更像熊猫）。但事实正好相反！我对 这一点还是很困惑。
       </p>
       <h3>
        你欺骗不了狗
       </h3>
       <p>
        现在我们了解了数学原理，一个简短的描述。我还尝试去欺骗网络，让它识别先前那只可爱的小狗：
       </p>
       <p>
        <img src="http://img.ptcms.csdn.net/article/201512/28/5680d40ce4223.jpg"/>
       </p>
       <p>
        但对于狗，网络会强烈地抵抗将其归类为除狗之外的东西！我花了一些时间试图让它相信那只狗是一个网球，但是它仍然是一只狗。是其它种类的狗！但仍然还是一只狗。
       </p>
       <p>
        我在一个会议上遇到了Jeff Dean（他在谷歌做神经网络工作），并向他请教了这一点。他告诉我，这个网络在训练集中有一堆狗，比熊猫多。所以他假设是要训练更好的网络来识别狗。似乎有道理！
       </p>
       <p>
        我认为这非常酷，这让我觉得训练更精确的网络更有希望。
       </p>
       <p>
        关 于这个话题还有另一件更有趣的事情–当我试图让网络认为熊猫是一只秃鹫时，它在中间花了一点时间去思考它是否是鸵鸟。当我问Jeff Dean关于熊猫和 狗这个问题时，他随口提到了“熊猫鸵鸟空间”，而我并没有提到让网络认为熊猫是秃鹫时曾思考过它是否是鸵鸟。这真的很酷，他用数据和这些网络花足够的时间 一下子就清楚地知道鸵鸟和熊猫以某种关系紧密地结合在一起。
       </p>
       <h3>
        更少的神秘感
       </h3>
       <p>
        当 我开始做这件事的时候，我几乎不知道什么是神经网络。现在我可以使它认为熊猫是一只秃鹰，并看到它是如何聪明的分类狗，我一点点的了解他们。我不再认为谷 歌正在做的很神奇了，但对于神经网络我仍然很疑惑。有很多需要学习！使用这种方式去欺骗它们，会消除一些神秘感，并且现在对它们的了解更多了。
       </p>
       <p>
        相信你也可以的！这个程序的所有代码都在
        <a href="https://github.com/jvns/neural-nets-are-weird">
         neural-networks-are-weird
        </a>
        这个仓库中。它使用的是Docker，所以你可以轻易地安装，而且你不需要一个GPU或是新电脑。这些代码都是在我这台用了3年的老GPU笔记本上运行的。
       </p>
       <p>
        想要了解更多，请阅读原论文：
        <a href="http://arxiv.org/abs/1412.6572">
         Explaining and Harnessing Adversarial Examples
        </a>
        。论文内容简短，写得很好，会告诉你更多本文没提及到的内容，包括如何使用这个技巧建立更好的神经网络！
       </p>
       <p>
        最后，感谢Mathieu Guay-Paquet, Kamal Marhubi以及其他在编写这篇文章帮助过我的人！
       </p>
       <p>
       </p>
       <p>
        <b>
         原文地址：
        </b>
        <a href="https://codewords.recurse.com/issues/five/why-do-neural-networks-think-a-panda-is-a-vulture" target="_blank">
         How to trick a neural network into thinking a panda is a vulture
        </a>
        （译者/刘帝伟 审校/刘翔宇 责编/仲浩）
       </p>
       <p>
        <b>
         译者简介：
        </b>
        刘帝伟，中南大学软件学院在读研究生，关注机器学习、数据挖掘及生物信息领域。
       </p>
       <p>
        <strong>
         文章来源：
         <a href="http://www.csdn.net/article/2015-12-28/2826566" target="_blank">
          CSDN
         </a>
        </strong>
       </p>
       <p>
       </p>
      </div>
      <div>
       <strong>
        注：转载文章均来自于公开网络，仅供学习使用，不会用于任何商业用途，如果侵犯到原作者的权益，请您与我们联系删除或者授权事宜，联系邮箱：contact@dataunion.org。转载数盟网站文章请注明原文章作者，否则产生的任何版权纠纷与数盟无关。
       </strong>
      </div>
      <!--content_text-->
      <div class="fenxian">
       <!-- JiaThis Button BEGIN -->
       <div class="jiathis_style_32x32">
        <p class="jiathis_button_weixin">
        </p>
        <p class="jiathis_button_tsina">
        </p>
        <p class="jiathis_button_qzone">
        </p>
        <p class="jiathis_button_cqq">
        </p>
        <p class="jiathis_button_tumblr">
        </p>
        <a class="jiathis jiathis_txt jtico jtico_jiathis" href="http://www.jiathis.com/share" target="_blank">
        </a>
        <p class="jiathis_counter_style">
        </p>
       </div>
       <!-- JiaThis Button END -->
      </div>
     </article>
     <!--content-->
     <!--相关文章-->
     <div class="xianguan">
      <div class="xianguantitle">
       相关文章！
      </div>
      <ul class="pic">
       <li>
        <a href="http://dataunion.org/24663.html">
         <img src="http://dataunion.org/wp-content/uploads/2016/06/095356be8cb4z9ke9389kd-204x200.jpeg"/>
        </a>
        <a class="link" href="http://dataunion.org/24663.html" rel="bookmark" title="人工智能界最强大脑畅谈AI未来之路">
         人工智能界最强大脑畅谈AI未来之路
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/24652.html">
         <img src="http://dataunion.org/wp-content/uploads/2016/02/20150522141422337-265x200.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/24652.html" rel="bookmark" title="重磅 | MIT与谷歌专家合著论文：机器学习和神经科学的相互启发与融合（附论文）">
         重磅 | MIT与谷歌专家合著论文：机器学习和神经科学的相互启发与融合（附论文）
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/24616.html">
         <img src="http://dataunion.org/wp-content/uploads/2016/06/224806wllbe6tcimyyi9xt-300x167.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/24616.html" rel="bookmark" title="微软人工智能计划背后的华人力量">
         微软人工智能计划背后的华人力量
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/24562.html">
         <img src="http://dataunion.org/wp-content/uploads/2016/06/8aac7ceb921d1684f06e6f65e2c1f224-300x173.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/24562.html" rel="bookmark" title="各位大佬，别再拿人工智能当春药了！">
         各位大佬，别再拿人工智能当春药了！
        </a>
       </li>
      </ul>
     </div>
     <!--相关文章-->
     <div class="comment" id="comments">
      <!-- You can start editing here. -->
      <!-- If comments are open, but there are no comments. -->
      <div class="title">
       期待你一针见血的评论，Come on！
      </div>
      <div id="respond">
       <p>
        不用想啦，马上
        <a href="http://dataunion.org/wp-login.php?redirect_to=http%3A%2F%2Fdataunion.org%2F21155.html">
         "登录"
        </a>
        发表自已的想法.
       </p>
      </div>
     </div>
     <!-- .nav-single -->
    </div>
    <!--Container End-->
    <aside id="sitebar">
     <div class="sitebar_list2">
      <div class="wptag">
       <span class="tagtitle">
        热门标签+
       </span>
       <div class="tagg">
        <ul class="menu" id="menu-%e5%8f%8b%e6%83%85%e9%93%be%e6%8e%a5">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1605" id="menu-item-1605">
          <a href="http://taidizh.com/">
           泰迪智慧
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20884" id="menu-item-20884">
          <a href="http://www.transwarp.cn/">
           星环科技
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3538" id="menu-item-3538">
          <a href="http://datall.org/">
           珈和遥感
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20888" id="menu-item-20888">
          <a href="http://www.chinahadoop.cn/">
           小象学院
          </a>
         </li>
        </ul>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <div class="textwidget">
       <div align="center">
        <a href="http://study.163.com/course/courseMain.htm?courseId=991022" target="_blank">
         <img src="http://dataunion.org/wp-content/uploads/2016/03/dv.jpg"/>
        </a>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       文章分类
      </h4>
      <div class="tagcloud">
       <a class="tag-link-44" href="http://dataunion.org/category/industry/demo" style="font-size: 10.204724409449pt;" title="4个话题">
        Demo展示
       </a>
       <a class="tag-link-31" href="http://dataunion.org/category/experts" style="font-size: 15.826771653543pt;" title="52个话题">
        专家团队
       </a>
       <a class="tag-link-870" href="http://dataunion.org/category/tech/ai" style="font-size: 19.795275590551pt;" title="273个话题">
        人工智能
       </a>
       <a class="tag-link-488" href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f" style="font-size: 8pt;" title="1个话题">
        加入数盟
       </a>
       <a class="tag-link-869" href="http://dataunion.org/category/tech/viz" style="font-size: 17.204724409449pt;" title="93个话题">
        可视化
       </a>
       <a class="tag-link-30" href="http://dataunion.org/category/partners" style="font-size: 10.645669291339pt;" title="5个话题">
        合作伙伴
       </a>
       <a class="tag-link-889" href="http://dataunion.org/category/parterc" style="font-size: 11.582677165354pt;" title="8个话题">
        合作会议
       </a>
       <a class="tag-link-104" href="http://dataunion.org/category/books" style="font-size: 12.96062992126pt;" title="15个话题">
        图书
       </a>
       <a class="tag-link-220" href="http://dataunion.org/category/tech/base" style="font-size: 19.850393700787pt;" title="281个话题">
        基础架构
       </a>
       <a class="tag-link-219" href="http://dataunion.org/category/tech/analysis" style="font-size: 19.409448818898pt;" title="232个话题">
        数据分析
       </a>
       <a class="tag-link-887" href="http://dataunion.org/category/tech/dm" style="font-size: 13.291338582677pt;" title="17个话题">
        数据挖掘
       </a>
       <a class="tag-link-34" href="http://dataunion.org/category/tech" style="font-size: 20.732283464567pt;" title="404个话题">
        文章
       </a>
       <a class="tag-link-1" href="http://dataunion.org/category/uncategorized" style="font-size: 22pt;" title="693个话题">
        未分类
       </a>
       <a class="tag-link-4" href="http://dataunion.org/category/events" style="font-size: 14.503937007874pt;" title="29个话题">
        活动
       </a>
       <a class="tag-link-890" href="http://dataunion.org/category/tech/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0" style="font-size: 10.204724409449pt;" title="4个话题">
        深度学习
       </a>
       <a class="tag-link-221" href="http://dataunion.org/category/tech/devl" style="font-size: 18.968503937008pt;" title="193个话题">
        编程语言
       </a>
       <a class="tag-link-888" href="http://dataunion.org/category/career" style="font-size: 15.661417322835pt;" title="48个话题">
        职业规划
       </a>
       <a class="tag-link-5" href="http://dataunion.org/category/jobs" style="font-size: 14.11811023622pt;" title="25个话题">
        职位
       </a>
       <a class="tag-link-871" href="http://dataunion.org/category/industry" style="font-size: 15.716535433071pt;" title="49个话题">
        行业
       </a>
       <a class="tag-link-613" href="http://dataunion.org/category/industry/case" style="font-size: 16.984251968504pt;" title="84个话题">
        行业应用
       </a>
       <a class="tag-link-885" href="http://dataunion.org/category/industry/news" style="font-size: 17.425196850394pt;" title="102个话题">
        行业资讯
       </a>
       <a class="tag-link-10" href="http://dataunion.org/category/training" style="font-size: 14.228346456693pt;" title="26个话题">
        课程
       </a>
       <a class="tag-link-16" href="http://dataunion.org/category/sources" style="font-size: 15.661417322835pt;" title="48个话题">
        资源
       </a>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       功能
      </h4>
      <ul>
       <li>
        <a href="http://dataunion.org/wp-login.php?action=register">
         注册
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/wp-login.php">
         登录
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/feed">
         文章
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/comments/feed">
         评论
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="https://cn.wordpress.org/" title="基于WordPress，一个优美、先进的个人信息发布平台。">
         WordPress.org
        </a>
       </li>
      </ul>
     </div>
    </aside>
    <div class="clear">
    </div>
   </div>
   <!--main-->
   ﻿
   <footer id="dibu">
    <div class="about">
     <div class="right">
      <ul class="menu" id="menu-%e5%ba%95%e9%83%a8%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18024" id="menu-item-18024">
        <a href="http://dataunion.org/category/partners">
         合作伙伴
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20881" id="menu-item-20881">
        <a href="http://dataunion.org/contribute">
         文章投稿
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20872" id="menu-item-20872">
        <a href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f">
         加入数盟
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22441" id="menu-item-22441">
        <a href="http://dataunion.org/f-links">
         友情链接
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20874" id="menu-item-20874">
        <a href="http://dataunion.org/aboutus">
         关于数盟
        </a>
       </li>
      </ul>
      <p class="banquan">
       数盟社区        ，
        做最棒的数据科学社区
      </p>
     </div>
     <div class="left">
      <ul class="bottomlist">
       <li>
        <a href="http://weibo.com/DataScientistUnion  " target="_blank" 　title="">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weibo.png"/>
        </a>
       </li>
       <li>
        <a class="cd-popup-trigger" href="http://dataunion.org/21155.html#0">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weixin.png"/>
        </a>
       </li>
      </ul>
      <div class="cd-popup">
       <div class="cd-popup-container">
        <h1>
         扫描二维码,加微信公众号
        </h1>
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/2014-12-06-1515289049.png"/>
        <a class="cd-popup-close" href="http://dataunion.org/21155.html">
        </a>
       </div>
       <!-- cd-popup-container -->
      </div>
      <!-- cd-popup -->
     </div>
    </div>
    <!--about-->
    <div class="bottom">
     <a href="http://dataunion.org/">
      数盟社区
     </a>
     <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
      京ICP备14026740号
     </a>
     联系我们：
     <a href="mailto:contact@dataunion.org" target="_blank">
      contact@dataunion.org
     </a>
     <div class="tongji">
     </div>
     <!--bottom-->
     <div class="scroll" id="scroll" style="display:none;">
      ︿
     </div>
    </div>
   </footer>
   <!--dibu-->
  </div>
 </body>
</html>